#pragma once

#include <set>
#include <vector>
#include <string>
#include <map>
#include <list>
#include <algorithm>
#include <sstream>

#include <shared_pointer.h>

#pragma warning(disable : 4018)
#pragma warning(disable : 4800)
#pragma warning(disable : 4267)

class mesh;
class material;
class model;
class texture;
class animation;
class node_animation_track;
class vertex_animation_track;
class skeleton;
class joint;
class matrix3;
class matrix4;
class vector2;
class vector3;
class vector4;
class quaternion;
class Bitmap;
class BitmapTex;

typedef shared_pointer<mesh> mesh_ptr;
typedef shared_pointer<model> model_ptr;
typedef shared_pointer<material> material_ptr;
typedef shared_pointer<texture> texture_ptr;
typedef shared_pointer<animation> animation_ptr;
typedef shared_pointer<skeleton> skeleton_ptr;
typedef shared_pointer<joint> joint_ptr;
typedef std::vector<mesh_ptr> mesh_vec;
typedef std::vector<model_ptr> model_vec;
typedef std::vector<material_ptr> material_vec;
typedef std::vector<texture_ptr> texture_vec;
typedef std::vector<skeleton_ptr> skeleton_vec;